/*
  学习目标：泛型约束-给参数指定更加详细的类型
  1. 使用extends关键字, 添加约束条件
  2. 指定更加详细的参数类型

  区别: 
    1. 泛型条件更加灵活
    2. 泛型条件复杂一点
*/

function test<T>(a: T[]): T[]{
  console.log(a.length);
  return a
}

type MyLength = {
  length: number;
};

function test1<T extends MyLength>(aa: T): T {
  return aa;
};

test1('123')